/**
 * Copyright 2009-2010 - YangJiandong(chunquedong)
 * 
 * This file is part of ChunMap project
 * Licensed under the GNU LESSER GENERAL PUBLIC LICENSE(Version >=3)
 * 你可以自由复制、传播本项目的下载包文件，但必须保持其完整性。
 * 我们不用对使用中的风险及由此造成的损失承担任何责任。
 * 详细情况请见《ChunMap许可协议》。

 * 想了解更多有关ChunMap的信息，请访问http://code.google.com/p/chunmap/
 */
package chunmap.model.geom;

import chunmap.model.coord.PrecisionModel;
import chunmap.model.coord.Transform;
import chunmap.model.elem.Envelope;

/**
 * 几何体
 * 
 * @author chunquedong
 * 
 */
public interface Geometry {
	/**
	 * 获取几何体的边框
	 * 
	 * @return
	 */
	public Envelope getEnvelop();

	/**
	 * 检查有效性
	 * 
	 * @return
	 */
	public boolean isValid();

	/**
	 * 几何体类型
	 * 
	 * @return
	 */
	public GeometryType getGeometryType();

	/**
	 * 边界
	 * 
	 * @return
	 */
	public Geometry getBoundary();


	/**
	 * 使用给定的变换，转换为新的坐标
	 * 
	 * @param transf
	 * @return
	 */
	public Geometry transform(Transform transf);

	/**
	 * 精度
	 * 
	 * @return
	 */
	public PrecisionModel getPrecision();

	
	public boolean equals(Object obj);
	public String toString();
}
